package com.dmap.analysispoint.controller.background;

import com.dmap.analysispoint.controller.background.param.CountParam;
import com.dmap.analysispoint.service.TopAnalysisService;
import com.dmap.base.constants.Constant;
import com.dmap.base.vo.BaseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;

/**
 * \* @author:zhouhao
 * \* Date:28/05/2018
 * \* Description:
 * \*
 */
@Api(value = "TOP统计", description = "background/TOP统计")
@Controller
@RequestMapping(value = "/background/dmap-analysis-point-server/v2/")

public class TopAnalysisController {

    @Resource
    private TopAnalysisService topAnalysisService;

    @ResponseBody
    @ApiOperation(value = "TOP统计模块APP版本top部分",
            notes = "1.传入所要查询的参数，参数为公司编号、渠道、项目编号、设备固件编号、设备固件版本号、app版本号、设备类型、查询的开始时间、查询的结束时间,参数根据权限和需要选填,其中查询的开始时间、查询的结束时间分别为查询时间段第一天的零点时间戳、最后一天的零点时间戳\n" +
                    "2.返回符合查询条件的TOP统计模块APP版本top部分的信息和数据")
    @RequestMapping(value = "appVersionTopAnalysisList", method = RequestMethod.POST)
    public BaseVo appVersionTopAnalysisList(@RequestBody CountParam param) {
        BaseVo baseVo = new BaseVo();
        if (param == null) {
            baseVo.setCode(Constant.RESPONSE_PARAM_ERROR_CODE);
            baseVo.setMsg(Constant.RESPONSE_PARAM_ERROR_MSG);
        }
        List<List> appVersionTopAnalysisList = topAnalysisService.appVersionTopAnalysisList(param);
        baseVo.setData(appVersionTopAnalysisList);
        return baseVo;
    }

    @ResponseBody
    @ApiOperation(value = "TOP统计模块固件版本top部分",
            notes = "1.传入所要查询的参数，参数为公司编号、渠道、项目编号、设备固件编号、设备固件版本号、app版本号、设备类型、查询的开始时间、查询的结束时间,参数根据权限和需要选填,其中查询的开始时间、查询的结束时间分别为查询时间段第一天的零点时间戳、最后一天的零点时间戳\n" +
                    "2.返回符合查询条件的TOP统计模块固件版本top部分的信息和数据")
    @RequestMapping(value = "firmwareVersionTopAnalysisList", method = RequestMethod.POST)
    public BaseVo firmwareVersionTopAnalysisList(@RequestBody CountParam param) {
        BaseVo baseVo = new BaseVo();
        if (param == null) {
            baseVo.setCode(Constant.RESPONSE_PARAM_ERROR_CODE);
            baseVo.setMsg(Constant.RESPONSE_PARAM_ERROR_MSG);
        }
        List<List> firmwareVersionTopAnalysisList = topAnalysisService.firmwareVersionTopAnalysisList(param);
        baseVo.setData(firmwareVersionTopAnalysisList);
        return baseVo;
    }

    @ResponseBody
    @ApiOperation(value = "TOP统计模块系统版本top部分",
            notes = "1.传入所要查询的参数，参数为公司编号、渠道、项目编号、设备固件编号、设备固件版本号、app版本号、设备类型、查询的开始时间、查询的结束时间,参数根据权限和需要选填,其中查询的开始时间、查询的结束时间分别为查询时间段第一天的零点时间戳、最后一天的零点时间戳\n" +
                    "2.返回符合查询条件的TOP统计模块系统版本top部分的信息和数据")
    @RequestMapping(value = "phoneVersionTopAnalysisList", method = RequestMethod.POST)
    public BaseVo phoneVersionTopAnalysisList(@RequestBody CountParam param) {
        BaseVo baseVo = new BaseVo();
        if (param == null) {
            baseVo.setCode(Constant.RESPONSE_PARAM_ERROR_CODE);
            baseVo.setMsg(Constant.RESPONSE_PARAM_ERROR_MSG);
        }
        List<List> phoneVersionTopAnalysisList = topAnalysisService.phoneVersionTopAnalysisList(param);
        baseVo.setData(phoneVersionTopAnalysisList);
        return baseVo;
    }

    @ResponseBody
    @ApiOperation(value = "TOP统计模块渠道top部分",
            notes = "1.传入所要查询的参数，参数为公司编号、渠道、项目编号、设备固件编号、设备固件版本号、app版本号、设备类型、查询的开始时间、查询的结束时间,参数根据权限和需要选填,其中查询的开始时间、查询的结束时间分别为查询时间段第一天的零点时间戳、最后一天的零点时间戳\n" +
                    "2.返回符合查询条件的TOP统计模块渠道top部分的信息和数据")
    @RequestMapping(value = "placeTopAnalysisList", method = RequestMethod.POST)
    public BaseVo placeTopAnalysisList(@RequestBody CountParam param) {
        BaseVo baseVo = new BaseVo();
        if (param == null) {
            baseVo.setCode(Constant.RESPONSE_PARAM_ERROR_CODE);
            baseVo.setMsg(Constant.RESPONSE_PARAM_ERROR_MSG);
        }
        List<List> placeTopAnalysisList = topAnalysisService.placeTopAnalysisList(param);
        baseVo.setData(placeTopAnalysisList);
        return baseVo;
    }
}
